<?php

    /*********************************************************************************
     * LeafPHP 控制器基类 www.leafphp.com
     *-------------------------------------------------------------------------------
     * 控制器类，用于被用户自定义的控制器继承。单例模式。可拓展控制器功能。
     *-------------------------------------------------------------------------------
     * $Author:hongshuaidong
     * $Dtime:2013-12-22
     ***********************************************************************************/

    if (!defined('__IS_LEAF__')) exit('Access Denied!');

    class controller extends base {

        static private $instances;  //单例模式下的实例化对象

        /**
         * 构造方法，私有模式，用于单利实例化
         * @access private
         */
        final private function __construct(){
        }

        /**
         * 魔术方法，调用不存在的方法
         * @access public
         */
        final public function __call($name, $args){
            $this->emptyMethod($name);
        }

        /**
         * 实例化自身，单例模式
         * @access public
         */
        final static public function getInstance($controller){
            if( isset(self::$instances[$controller]) ){
                return self::$instances[$controller];
            }else{
                //实例化被调用的控制器，如indexController
                return self::$instances[$controller] = new $controller();
            }
        }

        /**
         * 当调用的方法不存在的时候，自动调用该空方法
         * 该方法，可作为拓展使用，如404错误页面
         * @access public
         */
        public function emptyMethod($name){
            trigger_error( L('method_not_exists').':'.$name.'()', E_USER_ERROR) ;
        }

    }

?>